package com.gopay.common.cps.dao.fund;

import com.gopay.common.base.dao.BaseDAO;
import com.gopay.common.domain.fund.FundGopayCardEntity;

import java.util.List;

/**
 * @author baiyunpeng
 * @2016年7月14日 下午3:36:05  www.gopay.com.cn Inc.All rights reserved.
 */
public interface BindCardDAO extends BaseDAO<FundGopayCardEntity, String> {

    /**
     * 删卡
     * @param card
     */
    void deleteCard(FundGopayCardEntity card);

    /**
     * 保存卡
     * @param entity
     * @return
     */
    FundGopayCardEntity save(FundGopayCardEntity entity);

    /**
     * 根据协议号获取卡
     * @param agentId
     * @return
     */
    FundGopayCardEntity getCard(String agentId);

    /**
     * 根据协议号和订单号获取卡
     * @param agentNo
     * @param merOrderId
     * @return
     */
    List<FundGopayCardEntity> getCardByAgentOrMerOrderId(String agentNo, String merOrderId);

    /**
     * 根据协议号获取生效的卡信息
     * @param agentId
     * @return
     * @author dong-wang5@hnari.com
     * @2016年7月4日 上午10:28:31
     */
    @Deprecated
    FundGopayCardEntity getValidCard(String agentId);
    @Deprecated
    FundGopayCardEntity getValidCard(String agentId,String merId);

    /**
     * 离线查询卡根据bankcode
     * @param bankNo
     * @return
     */
    FundGopayCardEntity findByCriteria(String bankNo);

    /**
     * 更新卡
     * @param fundGopayCardEntity
     */
    void updateCard(FundGopayCardEntity fundGopayCardEntity);


    /**
     * 根据协议号和卡号获取生效卡信息
     * @param agentId
     * @param cardNo
     * @return
     */
    FundGopayCardEntity getValidCardByAgentAndCardNo(String agentId, String cardNo);

    /**
     * 根据协议号、商户号和卡号获取生效卡信息
     * @param agentId
     * @param merId
     * @return
     */
    FundGopayCardEntity getValidCardByAgentAndMerIdAndCardNo(String agentId,String merId, String cardNo);
}
